package com.wind.Model01_创建模式.创建模式01_单利模式$Singleton.设计模式;

/**
 * 思想：
 * 要保证单一实例 需要将能创建实例的私有化 保护起来。
 * 给一个公共的方法，需要这个类的实例，给它返回。
 */
// 1）懒汉式
class LazySingleton {
    // 将构造器私有化，不让new
    private LazySingleton() {}

    // 创建一个本类的实例对象
    private static LazySingleton instance = new LazySingleton();

    // 提供一个外部调用的方法，供使用本类的实例对象。加上static方便调用，就不用再new对象了~~~仅此而已
    public static LazySingleton getInstance() {
        return instance;
    }
}

// 2）饿汉式
class HungrySingleton {
    // 将构造器私有化
    private HungrySingleton() {}

    private static HungrySingleton instance = null;

    public static synchronized HungrySingleton getInstance() {
        if (instance == null) {
            instance = new HungrySingleton();
        }
        return instance;
    }
}